home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / Timing / EZCron.lha / EZCronGUI < prev    next >
Text File  |  1996-01-17  |  29KB  |  1,032 lines

  1. /* EZCronGUI v1.6 by Jim Hines. ©1995 All Rights Reserved.
  2. ** Internet email me at <hines_j@wvlink.mpl.com>
  3. ** EZCronGUI is The Graphic User Interface for EZCron, ©1994-1995 Jim Hines.
  4. ** 12-13-95 Added Speech Function to test subrtn.
  5. ** 12-22-95 Added Purge Function.
  6. ** 12-24-95 Added multi-windowing on prefs window
  7. ** 12-31-95 Added multi-windowing cyclegads on time and date fields
  8. **             Changed the main gui interface window and moved the new config
  9. **            button to the edit screen. Removed the Quik Add button altogether.
  10. ** 01-05-96 Added Weekdays, Weekends and Quarterly support.
  11. **             Added full online help subroutine.
  12. ** 01-07-96 Added Default Event Variable Handling. Opens prefs file at beginning
  13. **            and rereads it with the 'addefault' command.
  14. **            added online help for def event button.
  15. */
  16.  
  17. LF= '0a'x
  18. options results
  19.  
  20.     if ~show("L","rexxsupport.library") then
  21.            call addlib("rexxsupport.library", 0, -30)
  22.     
  23.     if ~show('L','rexxreqtools.library') then
  24.            call addlib("rexxreqtools.library", 0, -30, 0)
  25.         
  26.     if ~showlist( 'p', 'VAREXX' ) then do
  27.            address command 'run >nil: varexx'
  28.         call delay(25)
  29.         waitforport
  30.         waitforport
  31.     end
  32.  
  33.     address VAREXX
  34.     call openport("MAINWINPORT")  
  35.     load 'EZCron:EZC.gui MAINWINPORT'      
  36.     host = result     
  37.     address value host
  38.     show project0     
  39.  
  40. startup:
  41.  
  42.     if showlist('P', 'ACRON_REXX') then do
  43.         settext text '"EZCron is Currently Running"'
  44.     end
  45.  
  46.     if ~showlist('P', 'ACRON_REXX') then do
  47.         settext text '"EZCron is NOT Currently Running"'
  48.     end
  49.  
  50. /* ===== MAIN LOOP =======*/
  51. mainloop:
  52.  
  53.     do forever    /* Wait for the user to close the window */
  54.         date = Date(USA)
  55.         settext datewin date
  56.         setlist eventlist clear  /* CLEAR THE LISTVIEW WINDOW */
  57.  
  58.  
  59. /* ===== READ AND PARSE THE CONFIG FILE ===== */
  60.  
  61.         config = 's:cron.config'        /* Name of file for reading events from */
  62.         event. = 0
  63.  
  64.         if ~open(cronfile, config,'READ') then do
  65.             exit 20
  66.         end
  67.  
  68.         errors = 0
  69.  
  70.         do until eof(cronfile)
  71.             /* Grab the line, parse the event and ignore the comments */
  72.             linein = readln(cronfile)
  73.             parse var linein line '#'
  74.  
  75.             next = event.0 + 1
  76.  
  77.             parse var line event.next.command event.next.pargs1 event.next.pargs2,
  78.             event.next.pargs3 event.next.pargs4 event.next.time event.next.date,
  79.             event.next.sfx event.next.txt
  80.  
  81.             event.next.date = translate(event.next.date, 'abcdefghijklmnopqrstuvwxyz',,
  82.                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
  83.                             /* THE ABOVE TRANSLATES THE DATE TO LOWERCASE IF NOT NUMERIC */
  84.  
  85.             event.next.time = translate(event.next.time, 'abcdefghijklmnopqrstuvwxyz',,
  86.                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
  87.                             /* THE ABOVE TRANSLATES THE TIME TO LOWERCASE IF NOT NUMERIC */
  88.  
  89.  
  90.             if line ~= '' then do  /* This keeps the commented out lines from appearing */
  91.                 setlist Eventlist event.next.command event.next.pargs1 event.next.pargs2 event.next.pargs3 event.next.pargs4 event.next.time event.next.date event.next.txt '************************'
  92.             end
  93.  
  94.             select
  95.                 when event.next.command = '' then iterate
  96.                 when event.next.command = '' then do
  97.                     iterate
  98.                 end
  99.                 otherwise event.0 = next
  100.             end
  101.         end                                /* end of: do until EOF */
  102.         call close(cronfile)
  103.  
  104. /* =====END OF PARSE SECTION == */
  105.  
  106.         do forever  /* THIS DO LOOP CONTROLS THE CLOCK AND CHECKS FOR A PACKET */
  107.             packet = getpkt( "MAINWINPORT" )
  108.             clock = time('N')         /* THIS IS THE TIME WITH SECONDS IN 24HR */
  109.             clock2 = LEFT(clock,5)    /* THIS GET RID OF THE SECONDS */
  110.             sec = right(clock, 2)  /* Get Seconds */
  111.             settext time clock
  112.             call delay(48)
  113.  
  114. /*        do forever  /* THIS DO LOOP CONTROLS THE CLOCK AND CHECKS FOR A PACKET */
  115.             packet = getpkt( "MAINWINPORT" )
  116.             
  117.             newtime = time(s)                              /* Thanks Andy! */
  118.             if oldtime ~= newtime then do
  119.                 clock = time('N')         /* THIS IS THE TIME WITH SECONDS IN 24HR */
  120.                 clock2 = LEFT(clock,5)    /* THIS GET RID OF THE SECONDS */
  121.                 sec = right(clock, 2)  /* Get Seconds */
  122.                 settext time clock
  123.             end
  124.             oldtime = newtime
  125. */    
  126.             if packet ~= '00000000'x then do /* This is not a null message */
  127.                 class  = getarg(packet)    /* Get the information about the message */
  128.                     type = word(class, 1)
  129.                     msg = substr(class, 1,9) 
  130.                 call classes()
  131.             end
  132.         end
  133.  
  134.  
  135. classes:
  136.  
  137. /* =====CLASS CLOSEWINDOW ===== */
  138.         if class = closewindow then do
  139.             settext text 'Exiting EZCron'
  140.             call exiting() 
  141.         end
  142.  
  143. /* =====CLASS PAGEEDIT ===== */
  144.         if class = pageedit then call eventedit()
  145.  
  146.  
  147. /* =====CLASS AC_TOGGLE ===== */ 
  148.  
  149.         if class = AC_Toggle then do
  150.             if ~showlist('P', 'ACRON_REXX') then do    
  151.                 address command 'run >nil: rx >nil: EZCron start'
  152.                 waitforport
  153.                 settext text '"EZCron is now Running"'
  154.                 call mainloop()
  155.             end    
  156.             else
  157.                 if showlist('P', 'ACRON_REXX') then do    
  158.                 address command 'run >nil: rx >nil: EZCron stop'
  159.                 busy set /* Turn on busy pointer */
  160.             
  161.                     do until ~showlist('P', 'ACRON_REXX')
  162.                         clock = time('N')
  163.                         sec = right(clock, 2)  /* Get Seconds */
  164.                         sec2 = 59 - sec        /* 59 (seconds) minus sec) */
  165.                         settext text '"EZCron will exit in"' sec2 'seconds.'
  166.                         settext time clock
  167.                         call delay(48)
  168.                     end
  169.                 settext text '"EZCron is NOT Currently Running"'
  170.             end
  171.         busy /* Turn off Busy Pointer */
  172.         call mainloop()
  173.         end
  174.     end         /* End of first big do forever loop */
  175.  
  176. /* ===== EDITEVENT SUBROUTINE ========= */
  177.  
  178. eventedit:
  179.     hide
  180.     show editwindow
  181.     set sortgad blankgad1 disable
  182.  
  183. eventparse:
  184.     address value host  /* this is so the correct window's buttons work after closing other windows */
  185.     drop ev et ed arg1 arg2 arg3 arg4 sfx txt field /* this drops any variables that may be present */
  186.  
  187.     do forever
  188.         setlist selectevent clear
  189.         config = 's:cron.config'    /* Name of file for reading events from */
  190.         event. = 0
  191.     
  192.         if ~open(cronfile, config,'READ') then do
  193.             exit 20
  194.         end
  195.     
  196.         errors = 0
  197.         do until eof(cronfile)
  198.             linein = readln(cronfile)
  199.             parse var linein line '#'
  200.             next = event.0 + 1
  201.     
  202.             parse var line event.next.command event.next.pargs1 event.next.pargs2,
  203.             event.next.pargs3 event.next.pargs4 event.next.time    event.next.date,
  204.             event.next.sfx event.next.txt
  205.  
  206.             event.next.date = translate(event.next.date, 'abcdefghijklmnopqrstuvwxyz',,
  207.                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
  208.                             /* THE ABOVE TRANSLATES THE DATE TO LOWERCASE IF NOT NUMERIC */
  209.  
  210.             event.next.time = translate(event.next.time, 'abcdefghijklmnopqrstuvwxyz',,
  211.                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
  212.                             /* THE ABOVE TRANSLATES THE TIME TO LOWERCASE IF NOT NUMERIC */
  213.  
  214.  
  215.             event.next.txt = strip(event.next.txt) /* This Gets rid of the leading & trailing spaces in the LAST variable
  216.                                                       If new fields are added, the variable must be changed to reflect this */
  217.     
  218.             if line ~= '' then do  /* This keeps the commented out lines from appearing */
  219.                 setlist selectevent event.next.command
  220.             end
  221.         
  222.             select
  223.                 when event.next.command = '' then iterate
  224.                 when event.next.command = '' then do
  225.                     iterate
  226.                 end
  227.                 otherwise event.0 = next
  228.             end
  229.         end
  230.         call close(cronfile)
  231.  
  232. /* ===== END OF PARSE  */
  233.  
  234. waitforpkt:
  235.         call waitpkt( "MAINWINPORT" )    /* Wait for a message from Varexx */
  236.         packet = getpkt( "MAINWINPORT" )        /* Get the message */
  237.  
  238.            if packet ~= '00000000'x then do /* This is not a null message */
  239.             class  = getarg(packet)    /* Get the information about the message */
  240.                type = word(class, 1)
  241.                msg = substr(class, 12,100)
  242.             say 'Message Var = ' msg
  243.             say 'Class Var = ' class
  244.             say 'Type Var = ' type
  245.  
  246. /* ===== CLASS EXIT EDITOR ===== */
  247.             if class = end then do /* This is the exit button */
  248.                 hide
  249.                 show project0
  250.                 call startup()
  251.             end
  252.  
  253. /* ===== CLASS QUIT PROGRAM ===== */
  254.  
  255.             if class = closewindow then call exiting()
  256.  
  257. /* ===== CLASS MAINHELP CHECK ===== */
  258.  
  259.             if class = 'MAINHELP FALSE' then call mainhelp()
  260.  
  261.  
  262. /* ===== CLASS PREFSGAD ===== */
  263.  
  264.             if class = prefsgad then do
  265.                 call openport(PREFSWINPORT)
  266.                 spawn PREFSWINPORT
  267.                 host2 = result
  268.                 address value host2
  269.                 show prefswindow
  270.                 call prefs()
  271.             end
  272.  
  273. /* ===== CLASS EDIT ===== */        
  274.             if class = EDIT then do
  275.                 if ~exists('EZCron:prefs/txted.prefs') then address command 'ed s:cron.config'
  276.                 if exists('EZCron:prefs/txted.prefs') then do
  277.                     open(edconfig, 'EZCron:prefs/txted.prefs', 'r')
  278.                     linein = readln(edconfig)
  279.                     address command linein 's:cron.config'
  280.                     close(edconfig)
  281.                 end
  282.             end
  283.  
  284. /* ===== CLASS TEST EVENT ===== */
  285.  
  286.             if class = testevent then do
  287.                 if exists('EZCron:prefs/sfx.prefs') then do
  288.                     open(sfxconfig, 'EZCron:prefs/sfx.prefs', 'r')
  289.                     sfxplayer = readln(sfxconfig)
  290.                     close(sfxconfig)
  291.                 end
  292.  
  293.                 read event
  294.                 ev = RESULT
  295.     
  296.                 read arg1
  297.                 arg1 = RESULT
  298.                 if arg1 = '-' then arg1 = ''
  299.     
  300.                 read arg2
  301.                 arg2 = RESULT
  302.                 if arg2 = '-' then arg2 = ''
  303.  
  304.                 read arg3
  305.                 arg3 = RESULT
  306.                 if arg3 = '-' then arg3 = ''
  307.  
  308.                 read arg4
  309.                 arg4 = RESULT
  310.                 if arg4 = '-' then arg4 = ''
  311.  
  312.                 read sfx
  313.                 fx = RESULT
  314.                 if fx = '-' then fx = ''
  315.     
  316.                 read txtstr
  317.                 tx = result
  318.                 
  319.                 if ev ~= textreminder then do
  320.                     address command 'run >nil: 'ev arg1 arg2 arg3 arg4
  321.                 end
  322.     
  323.                 if fx ~= '' then do
  324.                         address command 'run >nil:' sfxplayer fx
  325.                 end
  326.     
  327.                 if ev = TEXTREMINDER then do
  328.                     address command 'run >nil: rx >nil: ezcron:rexx/Reminder.rexx' tx
  329.                     if showlist(h,SPEAK) then do
  330.                         address command 'echo' tx '>speak:'
  331.                     end
  332.                 end
  333.     
  334.                 drop ev arg1 fx tx sfxplayer
  335.             end
  336.     
  337. /* ===== CLASS GETFILE ===== */
  338.  
  339.             if class = getfile then do
  340.                 clock = time('N')
  341.                 clock2 = LEFT(clock,5)
  342.                 filename = rtfilerequest(, , "Pick a File To Run",OK, "rt_reqpos = reqpos_centerscr")
  343.                 settext event filename
  344.                 settext event_time clock2
  345.                 settext event_date Date(USA)
  346.                 settext arg1 '-'
  347.                 settext arg2 '-'
  348.                 settext arg3 '-'
  349.                 settext arg3 '-'
  350.                 settext sfx '-'
  351.                 settext txtstr '-'
  352.             end
  353.  
  354. /* ===== CLASS NEW CONFIG ===== */ 
  355.         if class = AC_New then do
  356.             if exists('EZCron:prefs/cprefs') then do
  357.                 open(prefs, 'EZCron:prefs/cprefs', 'r')
  358.                 defevent = readln(prefs)
  359.                 close(prefs)
  360.             end
  361.             if ~exists('s:cron.config') then do
  362.                     open(MkCfg, 's:cron.config',W)
  363.                     writeln(MkCfg, defevent)
  364.                     close(MkCfg)
  365.             end
  366.         else
  367.             call rtezrequest("A cron.config file already exists."||LF||"Do you wish to overwrite it?.", "_Yes|_No", , "rt_reqpos = reqpos_centerscr")
  368.             if rtresult == 1 then do
  369.                 if exists('s:cron.config.old') then address command 'delete s:cron.config.old'
  370.                 address command 'rename s:cron.config s:cron.config.old'
  371.                 call delay(3)
  372.                 open(MkCfg, 's:cron.config','w')
  373.                 writeln(MkCfg, defevent)
  374.                 close(MkCfg)
  375.             end
  376.         end     
  377.  
  378.     
  379. /* ===== CLASS REQUESTER GADS ===== */
  380.  
  381.             if class = arg1gad then do
  382.                 argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
  383.                 if argname = '' then argname = '-'
  384.                 settext arg1 argname
  385.             end
  386.     
  387.             if class = arg2gad then do
  388.                 argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
  389.                 if argname = '' then argname = '-'
  390.                 settext arg2 argname
  391.             end
  392.     
  393.             if class = arg3gad then do
  394.                 argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
  395.                 if argname = '' then argname = '-'
  396.                 settext arg3 argname
  397.             end
  398.     
  399.             if class = arg4gad then do
  400.                 argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
  401.                 if argname = '' then argname = '-'
  402.                 settext arg4 argname
  403.             end
  404.     
  405.             if class = sfxgad then do
  406.                 read sfx
  407.                 sfxtxt = result
  408.                 parse var sfxtxt device ':'
  409.                 if device = '-' then device = 'sys'
  410.                 argname = rtfilerequest(device':',, "Pick a soundfile",OK, "rt_reqpos = reqpos_centerscr")
  411.                 if argname = '' then argname = '-'
  412.                 settext sfx argname
  413.             end
  414.     
  415.             if class = txtgad then do
  416.                 read txtstr
  417.                 txt = result
  418.                 if txt = '-' then txt = '' 
  419.                 argname = rtgetstring(txt,'Enter Reminder String', 'Reminder Requester', ,'rt_reqpos = reqpos_centerscr')
  420.                 if argname = '' then call eventparse()
  421.                 clock = time('N')
  422.                 clock2 = LEFT(clock,5)
  423.                 settext txtstr argname
  424.                 settext event TextReminder
  425.                 settext event_time clock2
  426.                 settext event_date Date(USA)
  427.                 settext arg1 '-'
  428.                 settext arg2 '-'
  429.                 settext arg3 '-'
  430.                 settext arg3 '-'
  431.                 settext sfx '-'
  432.                 drop txt
  433.             end
  434.  
  435.             if class = datehelp then do
  436.                 call rtezrequest( " DATE HELP" || LF ||,
  437.                 " "    || LF ||,
  438.                 " These are possible date fields." || LF ||,
  439.                 " "    || LF ||,
  440.                 " "    || LF ||,
  441.                 " 01/01/95    * Run event once." || LF ||,
  442.                 " "    || LF ||,            
  443.                 " Mon-Fri     * Run event every " || LF ||,
  444.                 "               named day of week." || LF ||,
  445.                 " "    || LF ||,
  446.                 " Daily       * Run event every day." || LF ||,
  447.                 " "    || LF ||,
  448.                 " Weekdays    * Run event every" || LF ||,
  449.                 "               Monday-Friday only." || LF ||,
  450.                 " "    || LF ||,    
  451.                 " ", "More", ,)
  452.  
  453.  
  454.                 call rtezrequest( " DATE HELP" || LF ||,
  455.                 " "    || LF ||,
  456.                 " More possible date fields." || LF ||,
  457.                 " "    || LF ||,
  458.                 " "    || LF ||,
  459.                 " Weekend     * Run event every" || LF ||,
  460.                 "               Saturday & Sunday only." || LF ||,
  461.                 " "    || LF ||,    
  462.                 " Monthly-12  * Run event every month" || LF ||,
  463.                 "               on given date. The date" || LF ||,
  464.                 "               is specified AFTER the" || LF ||,
  465.                 "               hyphen." || LF ||,
  466.                 " "    || LF ||,
  467.                 " Every_#_ddd * This could actually be" || LF ||,
  468.                 "               typed as Every_3_Wed." || LF ||,
  469.                 "               This example would" || LF ||,
  470.                 "               execute an event every" || LF ||,
  471.                 "               3rd Wed. of the month." || LF ||,
  472.                 "               The '#' can be 1-5." || LF ||,
  473.                 "               The 'ddd' is a three" || LF ||,
  474.                 "               letter abbr. for day" || LF ||,
  475.                 "               of the week." || LF ||,
  476.                 " ", "Okay", ,)
  477.             call eventparse()
  478.             end
  479.  
  480.  
  481.             if class = timehelp then do
  482.                 call rtezrequest( " TIME HELP" || LF ||,
  483.                 " "    || LF ||,
  484.                 " These are possible time fields." || LF ||,
  485.                 " "    || LF ||,
  486.                 " "    || LF ||,
  487.                 " 14:40     * Run event at 2:40pm." || LF ||,
  488.                 " "    || LF ||,
  489.                 " Minute    * Run event once every" || LF ||, 
  490.                 "             minute." || LF ||,
  491.                 " "    || LF ||,            
  492.                 " Hourly    * Run event every hour" || LF ||,
  493.                 "             on the hour." || LF ||,
  494.                 " "    || LF ||,
  495.                 " Quarterly * Run event every 15" || LF ||,
  496.                 "             minutes." || LF ||,
  497.                 " ", "Okay", ,)
  498.             call eventparse()
  499.             end
  500.  
  501.             if class = datefields then do
  502.                 call openport(DATEWINPORT)
  503.                 spawn DATEWINPORT
  504.                 host3 = result
  505.                 address value host3
  506.                 show datewindow
  507.                 call datefields()
  508.             end
  509.  
  510.             if class = timefields then do
  511.                 call openport(TIMEWINPORT)
  512.                 spawn TIMEWINPORT
  513.                 host4 = result
  514.                 address value host4
  515.                 show timewindow
  516.                 call timefields()
  517.             end
  518.  
  519. /* ===== CLASS PURGE EVENT ===== */
  520.             if class = purgegad then do
  521.  
  522.                 address command 'copy s:cron.config s:cron.config.old'
  523.                 address command 'delete s:cron.config'
  524.                 open(dfile, 's:cron.config', 'W') /* create it again*/
  525.                 close(dfile)
  526.  
  527.                 do i = 1 to event.0
  528.                     say event.i.date
  529.                     parse var event.i.date month '/' day '/' year
  530.                     
  531.                     if day ~= '' & if year ~= '' then do 
  532.                         sortdate = '19'year''month''day
  533.                         eventdate = date('c',sortdate,'s')        /* number of days since..*/
  534.  
  535.                         currentdate = date(s) /* 19951221 */
  536.                         sortcurrent = date('c', currentdate, 's') /* number of days since..*/
  537.                         a = sortcurrent-eventdate
  538.                         say 'a equals =' a
  539.                         if a > 0 then event.i.command = delete  /* this are the files you DONT want to write */
  540.                     end
  541.  
  542.                     if event.i.command ~= delete then do    
  543.                         open(dfile, 's:cron.config', 'a')
  544.                         writeln(dfile, event.i.command event.i.pargs1 event.i.pargs2,
  545.                         event.i.pargs3 event.i.pargs4 event.i.time,
  546.                         event.i.date event.i.sfx event.i.txt)
  547.                         drop result
  548.                     end
  549.                     close(dfile)
  550.                     drop total
  551.                 end
  552.             end
  553.  
  554. /* ===== CLASS UPDATE (MODIFY) EVENT ===== */
  555.             if class = update then do
  556.  
  557.                 read event
  558.                 ev = result
  559.                 if ev = '' then call message('No Event Field.')
  560.                 if ev = '' then call eventparse()
  561.                 if ev = 'None Selected' then call message('No Event Field.')
  562.                 if ev = 'None Selected' then call eventparse()
  563.  
  564.                  event.en.command = ''
  565.                 event.en.time = ''
  566.                 event.en.date = ''
  567.                 event.en.pargs1 = ''
  568.                 event.en.pargs2 = ''
  569.                 event.en.pargs3 = ''
  570.                 event.en.pargs4 = ''
  571.                 event.en.sfx = ''
  572.                 event.en.txt = ''
  573.     
  574.                 address command 'copy s:cron.config s:cron.config.old'
  575.                 address command 'delete s:cron.config'
  576.                 open(dfile, 's:cron.config', 'W') /* create it again*/
  577.                 close(dfile)
  578.     
  579.                 read selectevent var h
  580.                 open(dfile, 's:cron.config', 'a')
  581.                 do n = 1 to h.count
  582.                     if event.n.time = '' then h.n = delete
  583.  
  584.                     if h.n ~= delete then
  585.                     writeln(dfile, h.n event.n.pargs1 event.n.pargs2,
  586.                     event.n.pargs3 event.n.pargs4 event.n.time,
  587.                     event.n.date event.n.sfx event.n.txt)
  588.                     drop result
  589.                 end
  590.                 close(dfile)
  591.  
  592.                 read event
  593.                 ev = result
  594.                 if ev = '' then call message('No Event Field.')
  595.                 if ev = '' then call eventparse()
  596.                 if ev = 'None Selected' then call message('No Event Field.')
  597.                 if ev = 'None Selected' then call eventparse()
  598.                 
  599.                 read event_time
  600.                 et = result
  601.                 if et = '' then    call message('No Time Field.')
  602.     
  603.                 read event_date
  604.                 ed = result
  605.                 if ed = '' then call message('No Date Field.')
  606.  
  607.                  read arg1
  608.                 arg1 = result
  609.                 if arg1 = '' then arg1 = '-'
  610.                 read arg2
  611.                 arg2 = result
  612.                 if arg2 = '' then arg2 = '-'
  613.                  read arg3
  614.                 arg3 = result
  615.                 if arg3 = '' then arg3 = '-'
  616.                 read arg4
  617.                 arg4 = result
  618.                 if arg4 = '' then arg4 = '-'
  619.     
  620.                 read sfx
  621.                 sfx = result
  622.                 if sfx = '' then sfx = '-'
  623.     
  624.                 read txtstr
  625.                 txt = result
  626.                 if txt = '' then txt = '-'
  627.                 
  628.                 open(dfile, 's:cron.config', 'a')
  629.                 writeln(dfile, ev arg1 arg2 arg3 arg4 et ed sfx txt)
  630.                 close(dfile)
  631.                 drop ev et ed arg1 arg2 arg3 arg4 sfx txt
  632.             end
  633.  
  634.  
  635.  
  636. /* ===== CLASS ADDEVENT ===== */
  637.  
  638.             if class = addevent then do
  639.                 read event
  640.                 ev = result
  641.                 if ev = '' then call message('No Event Field.')
  642.                 if ev = 'None Selected' then call message('No Event Field.')
  643.                 
  644.                 read event_time
  645.                 et = result
  646.                 if et = '' then    call message('No Time Field.')
  647.     
  648.                 read event_date
  649.                 ed = result
  650.                 if ed = '' then call message('No Date Field.')
  651.         
  652.                  read arg1
  653.                 arg1 = result
  654.                 if arg1 = '' then arg1 = '-'
  655.                 read arg2
  656.                 arg2 = result
  657.                 if arg2 = '' then arg2 = '-'
  658.                  read arg3
  659.                 arg3 = result
  660.                 if arg3 = '' then arg3 = '-'
  661.                 read arg4
  662.                 arg4 = result
  663.                 if arg4 = '' then arg4 = '-'
  664.     
  665.                 read sfx
  666.                 sfx = result
  667.                 if sfx = '' then sfx = '-'
  668.     
  669.                 read txtstr
  670.                 txt = result
  671.                 if txt = '' then txt = '-'
  672.                 
  673.                 if ev = '' then call eventparse()
  674.                 if ev = 'None Selected' then call eventparse()
  675.                 if et = '' then call eventparse()
  676.                 if ed = '' then call eventparse()
  677.  
  678.                 open(dfile, 's:cron.config', 'a')
  679.                 writeln(dfile, ev arg1 arg2 arg3 arg4 et ed sfx txt)
  680.                 close(dfile)
  681.                 drop ev et ed arg1 arg2 arg3 arg4 sfx txt
  682.             call eventparse()
  683.             end
  684.             
  685.  
  686. /* ===== CLASS ADDEFAULT EVENT ===== */
  687.  
  688.             if class = addefault then do
  689.                 read event
  690.                 ev = result
  691.                 if ev = '' then call message('No Event Field.')
  692.                 if ev = 'None Selected' then call message('No Event Field.')
  693.                 
  694.                 read event_time
  695.                 et = result
  696.                 if et = '' then    call message('No Time Field.')
  697.     
  698.                 read event_date
  699.                 ed = result
  700.                 if ed = '' then call message('No Date Field.')
  701.         
  702.                  read arg1
  703.                 arg1 = result
  704.                 if arg1 = '' then arg1 = '-'
  705.                 read arg2
  706.                 arg2 = result
  707.                 if arg2 = '' then arg2 = '-'
  708.                  read arg3
  709.                 arg3 = result
  710.                 if arg3 = '' then arg3 = '-'
  711.                 read arg4
  712.                 arg4 = result
  713.                 if arg4 = '' then arg4 = '-'
  714.     
  715.                 read sfx
  716.                 sfx = result
  717.                 if sfx = '' then sfx = '-'
  718.     
  719.                 read txtstr
  720.                 txt = result
  721.                 if txt = '' then txt = '-'
  722.                 
  723.                 if ev = '' then call eventparse()
  724.                 if ev = 'None Selected' then call eventparse()
  725.                 if et = '' then call eventparse()
  726.                 if ed = '' then call eventparse()
  727.  
  728.                 address command 'delete ezcron:prefs/cprefs'
  729.                 open(dfile, 'ezcron:prefs/cprefs', 'w')
  730.                 writeln(dfile, ev arg1 arg2 arg3 arg4 et ed sfx txt)
  731.                 close(dfile)
  732.                 drop ev et ed arg1 arg2 arg3 arg4 sfx txt
  733.             call eventparse()
  734.             end
  735.             
  736.  
  737. /* ===== SELECTEVENT ===== */            
  738.  
  739.             if msg ~= '' & type = 'SELECTEVENT' then do
  740.     
  741.                 settext event msg
  742.                 read selectevent NUMBER
  743.                 en = RESULT  /* en is the event number */
  744.                 say 'en = ' en
  745.                                     
  746.                 settext event_time event.en.time
  747.                 settext event_date event.en.date
  748.                 settext arg1 event.en.pargs1
  749.                 settext arg2 event.en.pargs2
  750.                 settext arg3 event.en.pargs3
  751.                 settext arg4 event.en.pargs4
  752.                 settext sfx event.en.sfx
  753.                 settext txtstr event.en.txt
  754.     
  755.                 say 'event.en.sfx =' event.en.sfx
  756.                 say 'event.en.txt =' event.en.txt
  757.                 say 'event.0 = ' event.0
  758.             end
  759.     
  760. /* ===== CLASS DELETE EVENT ===== */
  761.  
  762.             if class = delete_event then do
  763.                 event.en.command = ''
  764.                 event.en.time = ''
  765.                 event.en.date = ''
  766.                 event.en.pargs1 = ''
  767.                 event.en.pargs2 = ''
  768.                 event.en.pargs3 = ''
  769.                 event.en.pargs4 = ''
  770.                 event.en.sfx = ''
  771.                 event.en.txt = ''
  772.     
  773.                 address command 'copy s:cron.config s:cron.config.old'
  774.                 address command 'delete s:cron.config'
  775.                 open(dfile, 's:cron.config', 'W') /* create it again*/
  776.                 close(dfile)
  777.     
  778.                 read selectevent var h
  779.                 open(dfile, 's:cron.config', 'a')
  780.                 do n = 1 to h.count
  781.                     if event.n.time = '' then h.n = delete
  782.     
  783.                     if h.n ~= delete then
  784.                     writeln(dfile, h.n event.n.pargs1 event.n.pargs2,
  785.                     event.n.pargs3 event.n.pargs4 event.n.time,
  786.                     event.n.date event.n.sfx event.n.txt)
  787.                     drop result
  788.                 end
  789.                 close(dfile)
  790.     
  791.                 settext event 'None Selected'
  792.                 settext event_time 'NA'
  793.                 settext event_date 'NA'
  794.                 settext arg1 '-'
  795.                 settext arg2 '-'
  796.                 settext arg3 '-'
  797.                 settext arg3 '-'
  798.                 settext sfx '-'
  799.                 settext txtstr '-'
  800.                 
  801.                 call eventparse()
  802.             end /* Above routine end */
  803.         end        /* rexx portcheck end */
  804.     end            /* do forever main loop end */
  805.     exit        /* end of program....subs follow */
  806.  
  807.  
  808.  
  809.  
  810. /* ===== SUB-ROUTINES START HERE ==== */
  811.  
  812. /* ===== PREFERENCES ===== */
  813.  
  814. prefs:
  815.     set time_format date_format gadget42 disable
  816.     call waitpkt( "PREFSWINPORT" )    /* Wait for a message from Varexx */
  817.     packet = getpkt( "PREFSWINPORT" )        /* Get the message */
  818.  
  819.     if packet ~= '00000000'x then do /* This is not a null message */
  820.         class  = getarg(packet)    /* Get the information about the message */
  821.            type = word(class, 1)
  822.                msg = substr(class, 12,100)
  823.             say 'class =' class
  824.             say 'msg =' msg
  825.  
  826.             if class = 'CLOSEWINDOW PrefsWindow' then do  /* This is strange */
  827.                 hide
  828.                 call eventparse()
  829.             end
  830.  
  831.             if class = exitprefs then do
  832.                 hide
  833.                 call eventparse()
  834.             end
  835.     
  836.             if class = texteditor then do
  837.                 editor = rtfilerequest(, , "Pick a text editor",OK, "rt_reqpos = reqpos_centerscr")
  838.                 if rtresult == 0 then call prefs() /*This get out of the edprefs function */
  839.                 open(edconfig,'EZCron:prefs/txted.prefs', 'w')
  840.                 writeln(edconfig, editor)
  841.                 close(edconfig)
  842.                 drop editor
  843.             end
  844.                 
  845.             if class = sfxplayer then do
  846.                 player = rtfilerequest(, , "Pick a sound player",OK, "rt_reqpos = reqpos_centerscr")
  847.                 if rtresult == 0 then call prefs() /*This get out of the edprefs function */
  848.                 open(edconfig,'EZCron:prefs/sfx.prefs', 'w')
  849.                 writeln(edconfig, player)
  850.                 close(edconfig)
  851.                 drop player
  852.             end
  853.             call prefs()
  854.     end    
  855.  
  856. /* ===== DATE FIELD REQUESTER ===== */
  857.  
  858. datefields:
  859.     field = ''
  860.     do forever
  861.         call waitpkt( "DATEWINPORT" )    /* Wait for a message from Varexx */
  862.         packet = getpkt( "DATEWINPORT" )        /* Get the message */
  863.     
  864.         if packet ~= '00000000'x then do /* This is not a null message */
  865.             class  = getarg(packet)    /* Get the information about the message */
  866.                type = word(class, 1)
  867.             msg = substr(class, 11,25)
  868.  
  869.             if field = '' then field = date(usa)
  870.             say 'field before the if string is' field
  871.             if msg = '0' then field = Date(USA)
  872.             if msg = '1' then field = 'Daily'
  873.             if msg = '2' then field = 'Monthly-'right(date(S),2)  /* Monthly-13 */ 
  874.             if msg = '3' then field = 'Sunday'
  875.             if msg = '4' then field = 'Monday'
  876.             if msg = '5' then field = 'Tuesday'
  877.             if msg = '6' then field = 'Wednesday'
  878.             if msg = '7' then field = 'Thursday'
  879.             if msg = '8' then field = 'Friday'
  880.             if msg = '9' then field = 'Saturday'
  881.             if msg = '10' then field = 'Sunday'
  882.             if msg = '11' then field = 'Weekdays'
  883.             if msg = '12' then field = 'Weekend'
  884.             if msg = '13' then field = 'Every_1_Mon'
  885.         
  886.             if class = 'CLOSEWINDOW DateWindow' then do
  887.                 hide
  888.                 address value host
  889.                 call eventparse()
  890.             end
  891.     
  892.             if class = exitdate then do
  893.                 hide
  894.                 address value host
  895.                 call eventparse()
  896.             end
  897.  
  898.             if class = okay then do
  899.                 hide
  900.                 address value host
  901.                 settext event_date field
  902.                 call eventparse()
  903.             end
  904.         end    
  905.     end
  906.  
  907. /* ===== TIME FIELD REQUESTER ===== */
  908.  
  909. timefields:
  910.     field = ''
  911.     do forever
  912.         call waitpkt( "TIMEWINPORT" )    /* Wait for a message from Varexx */
  913.         packet = getpkt( "TIMEWINPORT" )        /* Get the message */
  914.     
  915.         if packet ~= '00000000'x then do /* This is not a null message */
  916.             class  = getarg(packet)    /* Get the information about the message */
  917.                type = word(class, 1)
  918.             msg = substr(class, 11,25)
  919.  
  920.             if field = '' then field = LEFT(time('N'),5)
  921.             if msg = '0' then field = LEFT(time('N'),5)
  922.             if msg = '1' then field = 'Minute'
  923.             if msg = '2' then field = 'Hourly'
  924.             if msg = '3' then field = 'Quarterly'
  925.  
  926.             if class = 'CLOSEWINDOW timewindow' then do
  927.                 hide
  928.                 address value host
  929.                 call eventparse()
  930.             end
  931.     
  932.             if class = exittime then do
  933.                 hide
  934.                 address value host
  935.                 call eventparse()
  936.             end
  937.  
  938.             if class = okay then do
  939.                 hide
  940.                 address value host
  941.                 settext event_time field
  942.                 call eventparse()
  943.             end
  944.  
  945.         end    
  946.     end
  947.  
  948.  
  949. mainhelp:
  950.     do forever
  951.         call waitpkt( "MAINWINPORT" )    /* Wait for a message from Varexx */
  952.         packet = getpkt( "MAINWINPORT" )        /* Get the message */
  953.  
  954.         if packet ~= '00000000'x then do /* This is not a null message */
  955.             class  = getarg(packet)    /* Get the information about the message */
  956.                type = word(class, 1)
  957.                    msg = substr(class, 12,100)
  958.             say 'class =' class
  959.             say 'msg =' msg
  960.  
  961.             if class = 'MAINHELP TRUE' then call eventparse()
  962.  
  963.             if class = getfile then call helpmessage('Calls file requester.')
  964.             if class = timehelp then call helpmessage('Time field help gadget.')
  965.             if class = timefields then call helpmessage('Time fields cycle gadget.')
  966.             if class = datehelp then call helpmessage('Date field help.')
  967.             if class = datefields then call helpmessage('Date fields cycle gadget')
  968.             if class = arg1gad then call helpmessage('Calls requester for file arguments')
  969.             if class = arg2gad then call helpmessage('Calls requester for file arguments')
  970.             if class = arg3gad then call helpmessage('Calls requester for file arguments')
  971.             if class = arg4gad then call helpmessage('Calls requester for file arguments')
  972.             if class = sfxgad then call helpmessage('Selects a sound file.')
  973.             if class = txtgad then call helpmessage('Adds a text string.')
  974.             if class = addevent then
  975.                 call rtezrequest("ADD AN EVENT TO THE LIST." || LF ||,
  976.                 "You MUST fill in your fields" || LF ||,
  977.                 "BEFORE pushing the ADD gadget." || LF ||,
  978.                 " ", "OKay", ,)
  979.  
  980.             if class = ac_new then call helpmessage('Creates a new s:cron.config file.')
  981.             if class = delete_event then call helpmessage('Removes event from the list.')
  982.             if class = edit then call helpmessage('Calls an external text editor.')
  983.             if class = update then
  984.                 call rtezrequest("UPDATES THE SELECTED EVENT." || LF ||,
  985.                 "Select the event you wish to modify." || LF ||,
  986.                 "Make the modifications you wish." || LF ||,
  987.                 "Click the Modif gadget." || LF ||,
  988.                 " ", "OKay", ,)    
  989.  
  990.             if class = testevent then call helpmessage('Tests the selected event')
  991.             if class = purgegad then call helpmessage('Removes old, one time events.')
  992.             if class = prefsgad then call helpmessage('Calls up the preferences window.')
  993.             if class = end then call helpmessage('Exits editor window.')
  994.             if class = closewindow then call helpmessage('Quits EZCron.')
  995. /*            if class = addefault then call helpmessage('Saves selected event as default event.')*/
  996.             if class = addefault then
  997.                 call rtezrequest("SAVES THE SELECTED (CURRENT)" || LF ||,
  998.                 "EVENT AS THE DEFAULT EVENT." || LF ||,
  999.                 " " || LF ||,
  1000.                 "Whenever you select the NEW" || LF ||,
  1001.                 "gadget, it always adds an event" || LF ||,
  1002.                 "to the newly created list. This" || LF ||,
  1003.                 "is the default event." || LF ||,
  1004.                 "This may be set to a past" || LF ||,
  1005.                 "date if you wish for nothing to" || LF ||,
  1006.                 "take place." || LF ||,
  1007.                 " ", "OKay", ,)    
  1008.  
  1009.         end
  1010.     end
  1011.  
  1012. helpmessage: procedure
  1013.  
  1014.     call rtezrequest( arg(1),'Okay!','EZCron Online Help','rtez_flags=ezreqf_centertext',)
  1015.     return
  1016.  
  1017. message: procedure
  1018.  
  1019.     call rtezrequest( arg(1),'Okay!','EZCron ERROR','rt_reqpos = reqpos_centerscr rtez_flags=ezreqf_centertext',)
  1020.     return
  1021.  
  1022.  
  1023. /* ===== EXIT AND CLEAN UP ===== */
  1024.  
  1025. exiting:
  1026.     address command 'run >nil: avail flush'
  1027.     'hide unload'  /* Hide the window and unload the gui file from memory */
  1028.     call delay(15)
  1029.     call closeport( "MAINWINPORT" )  /* Close the port */
  1030.     address command 'run >nil: vxc'
  1031. exit
  1032.